package model.channel;

import model.observer.SensorObserver;
import model.subject.Sensor;

/**
 * Interface pour le rôle du sujet et de l'observeur au sens du design pattern Observer. Un canal simule un relai pour les flux de mis-à-jour du sujet vers
 * les observeurs ainsi que pour les demandes d'informations des observeurs vers le sujet.
 */
public interface Channel extends Sensor, SensorObserver {

	/**
	 * Modification du capteur associé au canal.
	 * @param sensor	Le nouveau capteur associé au canal.
	 */
	public void setSensor(Sensor sensor);
	
	/**
	 * Modification de l'observeur associé au canal.
	 * @param sensorObserver	Le nouveau observeur associé au canal.
	 */
	public void setSensorObserver(SensorObserver sensorObserver);
	
	/**
	 * Modification de la latence du canal.
	 * @param latency	La nouvelle latence du canal.
	 */
	public void setLatency(long latency);
		
}
